package com.ezhan.entity;

import java.util.HashMap;
import java.util.Map;

public class Packages {
    // PackageInfo对象
    private static final Map<String, PackageInfo> packages = new HashMap<>();
    // 添加键值对
    static {
        // JDK配置
        packages.put("JDK", new PackageInfo(
                "jdk-17.0.10_windows-x64_bin.exe",      // 离线包文件名（固定），离线包必须为该名字
                // 下载参数
                new String[]{
                        "InstallDir={INSTALL_PATH}",  //占位符
                        "/s"  //静默安装
                },
                "{INSTALL_PATH}\\bin\\java.exe"    //验证下载是否成功
        ));

        // MySQL配置（使用ZIP安装）
        packages.put("MySQL", new PackageInfo(
                "mysql-8.0.37-winx64.zip", // ZIP文件名
                new String[]{
                        "{INSTALL_PATH}" // 解压目标路径
                },
                "{INSTALL_PATH}\\bin\\mysql.exe"
        ));

        // Python配置
        packages.put("Python", new PackageInfo(
                "python-3.8.10-amd64.exe",   // 离线包文件名
                new String[]{
                        "TargetDir={INSTALL_PATH}",  // 指定安装路径
                        "PrependPath=1",      // 添加到系统PATH
                        "Include_launcher=1", // 包含启动器
                        "Include_pip=1",       // 包含pip包管理器
                        "/quiet"              // 静默模式安装
                },
                "{INSTALL_PATH}\\python.exe"
        ));

        // DBeaver配置
        packages.put("DBeaver", new PackageInfo(
                "dbeaver-ce-23.1.4-x86_64-setup.exe", // 安装文件名
                new String[]{
                        "/S",  // 静默安装
                        "/currentuser", // 为当前用户安装
                        "/D={INSTALL_PATH}" // 安装目录（注意：必须是最后一个参数）
                },
                "{INSTALL_PATH}\\dbeaver.exe"
        ));
    }

    //添加一个公共静态方法，根据名称获取PackageInfo
    public static PackageInfo getPackageInfo(String packageName){
        return packages.get(packageName);
    }
}
